import Vue from 'vue'
import VueRouter from 'vue-router'
import PageRouter from './page/'
import ViewsRouter from './views/'
import AvueRouter from './avue-router'
import Store from '../store/'
import { newFormat } from '@/util/util'
Vue.use(VueRouter)
//创建路由
const createRouter = () => {
    return new VueRouter({
        scrollBehavior(to, from, savedPosition) {
            if (savedPosition) {
                return savedPosition
            } else {
                if (from.meta.keepAlive) {
                    from.meta.savedPosition = document.body.scrollTop
                }
                return {
                    x: 0,
                    y: to.meta.savedPosition || 0
                }
            }
        },
        routes: [...PageRouter, ...ViewsRouter]
    })
}
const Router = createRouter()
AvueRouter.install(Router, Store)
let newFormatMenu = newFormat(Store.state.user.menu)
Router.$avueRouter.formatRoutes(newFormatMenu, true)
// Router.$avueRouter.formatRoutes(Store.state.user.menu, true)
// 重置路由
export function resetRouter() {
    const newRouter = createRouter()
    Router.matcher = newRouter.matcher
    AvueRouter.install(Router, Store)
}
const originalPush = VueRouter.prototype.push

VueRouter.prototype.push = function push(location) {
    return originalPush.call(this, location).catch(err => err)
}
export default Router
